#ifndef DOCUMENT_H
#define DOCUMENT_H

#include "element.h"
#include "spec_node.h"
#include "namespace.h"

#include <list>
#include <iostream>

class Document {

public:
	Document();
	Document(const Document& e);
	
	virtual ~Document();
	
	void addSpecNode(SpecNode* specNode);
	void setRoot(XmlElement* element);
	void setDefaultNamespace(Namespace* ns);
	void setNsFile(char* file);
	
	Namespace* getDefaultNamespace();
	XmlElement* getRoot();
	std::string getNsFile();
	
	void print (std::ostream& out);
private:
	
	XmlElement* mRoot;
	std::list<SpecNode*> mSpecNodes;
	Namespace* mDefaultNamespace;
	std::string mNsFile;
};

#endif //DOCUMENT_H
